草庐IT

ruby module_function 与包含模块

全部标签

ruby - 如何检查 Ruby 数组是否包含多个值之一?

我有两个Ruby数组,我需要查看它们是否有任何共同的值。我可以循环遍历一个数组中的每个值,然后在另一个数组中执行include?(),但我确信有更好的方法。它是什么?(数组都包含字符串。)谢谢。 最佳答案 Setintersect他们:a1&a2这是一个例子:>a1=['foo','bar']>a2=['bar','baz']>a1&a2=>["bar"]>!(a1&a2).empty?#Returnstrueifthereareanyelementsincommon=>true 关于r

ruby - 在另一个模块中扩展 Ruby 模块,包括模块方法

每当我尝试扩展ruby​​模块时,我都会丢失模块方法。include和extend都不会这样做。考虑片段:moduleAdefself.say_hiputs"hi"endendmoduleBincludeAendB.say_hi#undefined_method无论B包含还是扩展A,都不会定义say_hi。有什么办法可以完成这样的事情吗? 最佳答案 如果您是moduleA的作者并且经常需要它,您可以像这样重新编写A:moduleAmoduleClassMethodsdefsay_hiputs"hi"endendextendClass

ruby-on-rails - 如何在 YAML 中声明同时包含单引号和双引号的字符串?

我正在对一个应用程序进行国际化,但不知道如何声明一个包含单引号和双引号的翻译字符串。这是我正在尝试的en.yml字符串的示例en:my_string:Whenyou'reusingdoublequotes,theylooklike"this"使用上面的字符串,我得到以下错误:cannotloadtranslationsfrom/vagrant/config/locales/en.yml,expectedittoreturnahash,butdoesnot如果只有双引号,我会用单引号括起来,反之亦然。我如何处理双引号和单引号? 最佳答案

ruby - 仅在模块中列出方法?

我想知道如何列出模块中的所有方法,但不包括继承的方法。例如。moduleSoftwaredefexitputs"exited"endendputsSoftware.methods不仅会列出退出,还会列出所有继承的方法。是否可以只列出导出?谢谢 最佳答案 实际上Software.methods不会列出exit。Software.instance_methods将列出exit以及任何继承的方法(在这种情况下什么都不是,因为模块不继承任何方法,除非您包含另一个模块)。Software.instance_methods(false)将仅列出

ruby - 模块中的实例变量?

即使我无法创建模块的实例,我怎么可能在模块中拥有实例变量?下面的模块Stacklike中的@stack的目的是什么?moduleStacklikedefstack@stack||=[]endend 最佳答案 将实例变量视为将存在于包含您的模块的任何类中的东西,这样事情就更有意义了:moduleStacklikedefstack@stack||=[]enddefadd_to_stack(obj)stack.push(obj)enddeftake_from_stackstack.popendendclassClownStackinclu

ruby - 检查字符串是否包含 Ruby 数组中的任何子字符串

我正在使用Tmail库,对于电子邮件中的每个附件,当我执行attachment.content_type时,有时我不仅会得到内容类型,还会得到名称。示例:image/jpeg;name=example3.jpgimage/jpeg;name=example.jpgimage/jpeg;name=photo.JPGimage/png我有一组像这样的有效内容类型:VALID_CONTENT_TYPES=['image/jpeg']我希望能够检查内容类型是否包含在任何有效的内容类型数组元素中。在Ruby中这样做的最佳方式是什么? 最佳答案

ruby - 在包含任意数量的嵌套哈希和数组的哈希中查找键/值对

Web服务正在返回包含未知数量的嵌套哈希的哈希,其中一些包含一个数组,而数组又包含未知数量的嵌套哈希。一些键不是唯一的——即存在于多个嵌套哈希中。然而,我真正关心的所有键都是唯一的。有没有什么办法可以给顶级散列一个键,即使键值对深埋在这个泥潭中也能取回它的值?(Web服务是亚马逊产品广告API,根据结果数量和每个产品类别允许的搜索类型,它提供的结果结构略有不同。) 最佳答案 这是一个简单的递归解决方案:defnested_hash_value(obj,key)ifobj.respond_to?(:key?)&&obj.key?(ke

ruby - 我如何判断哪些模块已混合到一个类中?

我有一个类,其中有许多模块根据某些运行时标准混入其中。我希望能够获得一个列表,其中列出了哪些模块已混合到此类中。你怎么做到的?更新所以当我说类时,我指的是对象,因为它是在运行时使用以下方法扩展的对象:obj.extend(MyModule)obj.included_modules和obj.ancestors不存在,因此您无法从那里获取已混合的模块。 最佳答案 尝试:MyClass.ancestors.select{|o|o.class==Module}例如:>>Array.ancestors.select{|o|o.class==M

ruby - 如何在 Ruby 中生成一个包含 n 个唯一随机数的列表?

这是我目前所拥有的:myArray.map!{rand(max)}然而,显然,有时列表中的数字不是唯一的。如何确保我的列表只包含唯一编号,而不必创建一个更大的列表,然后从中选择n个唯一编号?编辑:我真的很想看到这个没有循环的完成——如果可能的话。 最佳答案 (0..50).to_a.sort{rand()-0.5}[0..x](0..50).to_a可以替换成任意数组。0是“最小值”,50是“最大值”x是“我想要多少个值”当然,x不可能被允许大于max-min:)扩展其工作原理(0..5).to_a==>[0,1,2,3,4,5][

ruby - 检查文件是否包含字符串

所以我在这里发现了这个问题,但我对输出以及如何使用if语句处理它有疑问。这就是我的,但它总是说它是真的,即使文件中不存在monitor这个词ifFile.readlines("testfile.txt").grep(/monitor/)dosomethingend它应该是=="nil"吗?我对ruby​​很陌生,不确定输出是什么。 最佳答案 我会使用:ifFile.readlines("testfile.txt").grep(/monitor/).any?或ifFile.readlines("testfile.txt").any?{